python 调用C语言DLL的方法

您所在的位置:网站首页 python 调用dll函数 python 调用C语言DLL的方法

python 调用C语言DLL的方法

2024-07-01 03:09| 来源: 网络整理| 查看: 265

生成DLL文件

这里使用的开发工具是Dev C++,详细方法可以查看下面这篇文章: Dev c++工具将C代码生成dll文件以及如何调用dll文件 需要注意的一点是,64位python解释器只能调用64位的dll文件,因此需要安装64位编译器来编译C代码。

新建DLL项目

点击文件->新建->项目,选择DLL,语言选择C项目,然后选择名称和保存位置。 在这里插入图片描述

编写函数代码

新项目会默认生成dllmain.c和dll.h两个文件,dll.h中声明了一个函数名,dllmain.c则包含了函数的具体内容,修改函数只需要修改这两个文件中的函数名和函数内容即可,不需要更改其他内容。 修改后,代码中包含了一个名为HelloWorld的函数,功能就是向命令行输出一串文字。 在这里插入图片描述 在这里插入图片描述

编译导出

在工具栏选择编译器为64位,如果没有则需要自行安装。 在这里插入图片描述 点击运行->编译,或者工具栏上的编译按钮,即可生成dll文件。

在这里插入图片描述 打开工程所在的文件夹,会发现有一个dll结尾的文件,只需要将这个dll文件复制到需要调用的位置即可。 在这里插入图片描述

python调用

使用python自带的ctypes即可调用,调用步骤是

加载DLL模块定义函数参数类型定义函数返回值类型调用函数 import ctypes libc= ctypes.cdll.LoadLibrary('sample.dll')#这里的参数是文件路径 #libc.HelloWorld.argtypes =[ctypes.c_char_p,ctypes.c_char_p]#指定参数类型,此函数没有参数,仅作示例 #libc.HelloWorld.restype=ctypes.c_double #指定函数的返回值类型,此函数没有返回值,仅作示例 libc.HelloWorld() #调用dll内的函数

输出

Hello world from dll!

调用成功。

测试

为了测试效率首先编写一个即简单又耗时的函数,比如求圆周率: 这个方法借鉴了蒙特卡洛方法,不足之处不必深究,仅仅为了测试效率而已。

def getPi()->float: length=10000 #圆半径长 circle:int=0 #圆形内的点的数量 retangle=length*length#方形区域面积 for x in range(length): for y in range(x): if x*x+y*y


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3